﻿/// <summary>
///     Cette classe correspond au contrôleur qui gère les actions qui manipulent les données des entreprises.
///     Actions :
///         - GET
///           <c>Index</c>  -> Accueil
///           <c>NE</c>     -> Nouvelle Entreprise : Affiche le formulaire pour ajouter une entreprise dans la base de données.
///           <c>AE</c>     -> Afficher Entreprise : Affiche les informations d'une entreprise.
///           <c>ATE</c>    -> Afficher Toute Entreprise : Affiche la liste des entreprises contenu dans la base de données
///           <c>ME</c>     -> Modification Entreprise : Permet à l'utilisateur de modifier les données entreprises.
///         - POST
///           <c>NE</c>     -> Nouvelle Entreprise : Récupère les données du formulaire, effectue un test de validation et 
///                            dans le cas où il est valide, enregistre les donnés dans la base de données.
///           <c>ME</c>     ->  Récupère les données du formulaire, effectue un test de validation et 
///                            dans le cas où il est valide, Modifie les données entreprises.              
///     <remarks>
///         Action manquant :
///             - SE  -> suppression POST
///         Prochaine action : Ajout du javascript pour permettre la gestion complète
///     </remarks>
/// </summary>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SchoolProject2012.Functions;
using SchoolProject2012.Services;
using SchoolProject2012.Domain;
using System.Text.RegularExpressions;

namespace SchoolProject2012.Areas.ChargeDePlacement.Controllers
{

    public class EntrepriseController : Controller
    {

        private IModelService model;
        
        public EntrepriseController(IModelService m) {
            model = m;
        }

        public ActionResult Index(string langue)
        {
            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Field.getLanguage(langue));
            return View();
        }

        #region Visualisation

        public ActionResult ATE(string langue) 
        {
            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Field.getLanguage(langue));
            IEnumerable<Entreprise> liste =  model.getListOfEntreprise();
            return View(liste);
        }

        [HttpPost]
        public PartialViewResult ATE_Ajax() {
            IEnumerable<Entreprise> liste = model.getListOfEntreprise();
            return PartialView("ATEA", liste);
        }

        public ActionResult AE(string langue, int id)
        {
            Entreprise ent = model.getEntreprise(id);
            if (ent == null)
            {
                return HttpNotFound();
            }
            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Field.getLanguage(langue));
            return View(ent);
        }
        #endregion

        #region Ajout

        public ViewResult NE(string langue) {
            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Field.getLanguage(langue));
            return View();
        }

        [HttpPost]
        public ViewResult NE(string langue, Entreprise ent)
        {
            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Field.getLanguage(langue));
            if (ent.isValidEntreprise())
                model.addEntreprise(ent);
            else
                return View("ER", ent);
            return View("AE", ent);
        }
    
        #endregion

        #region Modification

        public ActionResult ME(string langue, int id)
        {
            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Field.getLanguage(langue));
            Entreprise ent = model.getEntreprise(id);
            if (ent == null)
            {
                return HttpNotFound();
            }
            
            return View(ent);
        }

        [HttpPost]
        public ViewResult ME(string langue, Entreprise ent)
        {
           //System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Field.getLanguage(langue));
            if (ent.isValidEntreprise())
            {
                Entreprise entreprise = model.getEntreprise(ent.id);
                if (entreprise == null)
                {
                    return View("ER", ent);
                }
                if (ModelState.IsValid)
                {
                    model.updateEntreprise(ent);
                }
            }
            return View("AE", ent);
        }

        #endregion

        #region Suppresion

        [HttpPost]
        public ActionResult SE(int id)
        {
            Entreprise entreprise = model.getEntreprise(id);
            if (entreprise == null)
            {
                return View("ER");
            }
            ViewBag.result = model.deleteEntreprise(id);
            return View();
        }

        #endregion

    }
}
